//(function(obj) {
////	console.log(obj);
//	var requestFileSystem = obj.webkitRequestFileSystem || obj.mozRequestFileSystem || obj.requestFileSystem;
//
//	function onerror(message) {
//		console.log(message);
//	}
//
//	function createTempFile(callback) {
//		var tmpFilename = "tmp.dat";
//		requestFileSystem(TEMPORARY, 4 * 1024 * 1024 * 1024, function(filesystem) {
//			function create() {
//				filesystem.root.getFile(tmpFilename, {
//					create : true
//				}, function(zipFile) {
//					callback(zipFile);
//				});
//			}
//
//			filesystem.root.getFile(tmpFilename, null, function(entry) {
//				entry.remove(create, create);
//			}, create);
//		});
//	}
//
//	var model = (function() {
//		var URL = obj.webkitURL || obj.mozURL || obj.URL;
//
//		return {
//			getEntries : function(file, onend) {
//				zip.createReader(new zip.BlobReader(file), function(zipReader) {
//					zipReader.getEntries(onend);
//				}, onerror);
//			},
//			getEntryFile : function(entry, creationMethod, onend, onprogress) {
//				var writer, zipFileEntry;
//
//				function getData() {
//					entry.getData(writer, function(blob) {
//						var blobURL = creationMethod == "Blob" ? URL.createObjectURL(blob) : zipFileEntry.toURL();
//						onend(blobURL);
//					}, onprogress);
//				}
//
//				if (creationMethod == "Blob") {
//					writer = new zip.BlobWriter();
//					getData();
//				} else {
//					createTempFile(function(fileEntry) {
//						zipFileEntry = fileEntry;
//						writer = new zip.FileWriter(zipFileEntry);
//						getData();
//					});
//				}
//			}
//		};
//	})
//	();
//	})(this);

var obj = window;
//console.log(obj);
var requestFileSystem = obj.webkitRequestFileSystem || obj.mozRequestFileSystem || obj.requestFileSystem;

	function onerror(message) {
		console.log(message);
	}

	function createTempFile(callback) {
		var tmpFilename = "tmp.dat";
		requestFileSystem(TEMPORARY, 4 * 1024 * 1024 * 1024, function(filesystem) {
			function create() {
				filesystem.root.getFile(tmpFilename, {
					create : true
				}, function(zipFile) {
					callback(zipFile);
				});
			}

			filesystem.root.getFile(tmpFilename, null, function(entry) {
				entry.remove(create, create);
			}, create);
		});
	}

//	var model = (function() {
//		var URL = obj.webkitURL || obj.mozURL || obj.URL;
//
//		return {
//			getEntries : function(file, onend) {
//				zip.createReader(new zip.BlobReader(file), function(zipReader) {
//					zipReader.getEntries(onend);
//				}, onerror);
//			},
//			getEntryFile : function(entry, creationMethod, onend, onprogress) {
//				var writer, zipFileEntry;
//
//				function getData() {
//					entry.getData(writer, function(blob) {
//						var blobURL = creationMethod == "Blob" ? URL.createObjectURL(blob) : zipFileEntry.toURL();
//						onend(blobURL);
//					}, onprogress);
//				}
//
//				if (creationMethod == "Blob") {
//					writer = new zip.BlobWriter();
//					getData();
//				} else {
//					createTempFile(function(fileEntry) {
//						zipFileEntry = fileEntry;
//						writer = new zip.FileWriter(zipFileEntry);
//						getData();
//					});
//				}
//			}
//		};
//	});
	var URL = obj.webkitURL || obj.mozURL || obj.URL;
	var model = {
		getEntries:function(file,onend){
			console.log(file);
			zip.createReader(new zip.BlobReader(file), function(zipReader) {
					zipReader.getEntries(onend);
				}, onerror);
		},
		getEntryFile:function(entry, creationMethod, onend, onprogress){
			var writer, zipFileEntry;

			function getData() {
				entry.getData(writer, function(blob) {
					var blobURL = creationMethod == "Blob" ? URL.createObjectURL(blob) : zipFileEntry.toURL();
					onend(blobURL);
				}, onprogress);
			}

			if (creationMethod == "Blob") {
				writer = new zip.BlobWriter();
				getData();
			} else {
				createTempFile(function(fileEntry) {
					zipFileEntry = fileEntry;
					writer = new zip.FileWriter(zipFileEntry);
					getData();
				});
			}
		}
	}

var $btn = $('#uploadBtn');
var $list = $('#fileList');
var state = 'pending';
var fileServer = $("#fileServer", window.parent.document).val();
var GUID = WebUploader.Base.guid();//一个GUID
var md5Value = '';
var uploader;
var startTime;
//WebUploader.Uploader.register({
//  "before-send-file" : "$beforeSendFile",//所有分块发送前
//  "before-send" : "$beforeSend",//每个分块发送前
//  "after-send-file" : "$afterSendFile"//每个分块发送后
//},{
//
//  $beforeSendFile:function(file){
//      var deferred = WebUploader.Base.Deferred();
//      startTime = new Date().getTime();
//      console.log(startTime);
//      uploader.md5File(file)
//          .then(function(val) {
//              md5Value = val;
//              // console.log(md5Value);
//              deferred.resolve();
//          });
//      return deferred.promise();
//  },
//  $beforeSend:function(block){
//      //校验分块
//      var deferred = WebUploader.Base.Deferred();
//      // console.log(block);
//      $.ajax({
//          type:'POST',
//          async:false,
//          url:fileServer+"/checkChunk?loginId="+sessionStorage.loginId,
//          data:{
//              fileMd5:md5Value,
//              chunk:block.chunk,
//              chunkSize:block.end - block.start,
//              progressBar:0
//          },
//          dataType:'json',
//          success:function(res){
//              // console.log(res);
//              if(res){
//                  if(res.code == 'OK'){
//                      if(res.data){
//                          deferred.reject();
//                          alert("文件已存在");
//                      }else{
//                          deferred.resolve();
//                      }
//                  }
//              }
//          }
//      });
//      this.owner.options.formData.fileMd5 = md5Value;
//      deferred.resolve();
//      return deferred.promise();
//  },
//  $afterSendFile:function(file){
//      var str = "文件名称："+file.name+"\n"+"文件大小："+file.size+"\n"+'上传时间:'+(new Date().getTime()-startTime)+'ms'
//      console.log(str);
//      $.ajax({
//          type:'POST',
//          async:false,
//          url:fileServer+"/merge?loginId="+sessionStorage.loginId,
//          data:{
//              fileMd5:md5Value,
//              extName:file.ext
//          },
//          dataType:'json',
//          success:function(res){
//              // console.log(res);
//          }
//      });
//  }
//})


uploader = WebUploader.create({
    // 选完文件后，是否自动上传。
    auto: true,
    // swf文件路径
    swf: '../swf/Uploader.swf',
    // 文件接收服务端。
//            server: "http://114.215.204.206:8094/upload?loginId="+sessionStorage.loginId,
    server: fileServer+"/uploadCompress?loginId="+sessionStorage.loginId,
    // 选择文件的按钮。可选。
    // 内部根据当前运行是创建，可能是input元素，也可能是flash.
    pick: '#filePicker',
    fileNumLimit:1,
    chunked:false,
    threads : 1, // 只运行1个线程传输
    duplicate : false, // 是否重复上传（单次选择同样的文件）
    prepareNextFile : true, // 允许在文件传输时提前把下一个文件准备好
    fileSingleSizeLimit : 1024 * 1024*1024*1024,
    // accept: {
    //     title: 'compress',
    //     extensions: 'zip,rar',
    //         mimeTypes: 'image/jpg,image/jpeg,image/png',
    //         application/x-zip-compressed,application/octet-stream
    // }
});



uploader.on( 'fileQueued', function( file ) {
    // uploader.md5File(file)
    //     .then(function (value) {
    //         md5Value = value;
    //     })
model.getEntries(source, function(entries) {
//				fileList.innerHTML = "";
				entries.forEach(function(entry) {
//					var li = document.createElement("li");
//					var a = document.createElement("a");
					console.log(entry);
//					a.textContent = entry.filename;
//					a.href = "#";
//					a.addEventListener("click", function(event) {
//						if (!a.download) {
//							download(entry, li, a);
//							event.preventDefault();
//							return false;
//						}
//					}, false);
//					li.appendChild(a);
//					fileList.appendChild(li);
				var $li = $(
				        '<div id="' + file.id + '" class="file-item thumbnail">' +
				        '<div class="info">' + entry.filename + '</div>' +
				        '</div>'
				        );
				    $list.append($li);
				});
			});
    
});

uploader.on('uploadBeforeSend',function (object,data,headers ) {
    data.md5value=md5Value;
});

// 文件上传过程中创建进度条实时显示。
uploader.on( 'uploadProgress', function( file, percentage ) {
    var $li = $( '#'+file.id ),
        $percent = $li.find('.progress span');

    // 避免重复创建
    if ( !$percent.length ) {
        $percent = $('<p class="progress"><span></span></p>')
            .appendTo( $li )
            .find('span');
    }

    $percent.css( 'width', percentage * 100 + '%' );
});

// 文件上传成功，给item添加成功class, 用样式标记上传成功。
uploader.on( 'uploadSuccess', function( file ) {
    $( '#'+file.id ).find('p.state').text('已上传');
});

// 文件上传失败，显示上传出错。
uploader.on( 'uploadError', function( file ) {
    var $li = $( '#'+file.id ),
        $error = $li.find('div.error');

    // 避免重复创建
    if ( !$error.length ) {
        $error = $('<div class="error"></div>').appendTo( $li );
    }

    $error.text('上传失败');
});

// 完成上传完了，成功或者失败，先删除进度条。
uploader.on( 'uploadComplete', function( file ) {
    $( '#'+file.id ).find('.progress').remove();
});
